/**
 * 1. 这里学到了，普通函数使用ts文件进行保存
 * 
 */
import { createContext, useContext, type ReactNode } from "react";

// 定义权限用户信息类型
export interface AuthUser {
  nickName: string;
  userName: string;
  roles: string[];
  // 可以添加其他用户信息字段
}

// 定义权限提供者的props类型
export interface AuthProviderProps {
  children: ReactNode;
}

// 定义AuthContext的类型
interface AuthContextType {
  isAuthenticated: boolean;
  authUser: AuthUser | null;
  login: (token: string, userInfo: AuthUser) => void;
  logout: () => void;
  authChecked: boolean;
}

// 创建AuthContext上下文，并初始化其值
export const AuthContext = createContext<AuthContextType | undefined>(undefined);

// 自定义hook，用于获取AuthContext中的值
export const useAuth = () => {
  const context = useContext(AuthContext);
  if (context === undefined) {
    throw new Error('useAuth must be used within an AuthProvider');
  }
  return context;
};